// #include <iostream>
// #include"util.hpp"
// #include"sink.hpp"
// #include"format.hpp"
// #include"level.hpp"
// #include"log.hpp"
// #include"buffer.hpp"
// #include"message.hpp"

//只要包含这个头文件即可：
#include"../logs/bitLog.hpp"
void test_log()
{
     bit::Logger::ptr it = bit::getLogger("sylog");
     it->debug("你好，这是debug信息");
     it->warn("你好，这是warn信息");
     it->error("这是错误：%d", 404);
}
int main()
{
    /*
        测试缓冲区：读取一个旧文件的内容，然后将读取到的内容写到缓冲区里面，
        再将缓冲区里面的内容写到一个新文件当中内容一致则没问题。
    */
    //1.第一步：先获取mylog.txt文件的大小：
    // std::ifstream ifs("mylog.txt", std::ios::binary | std::ios::ate);
    // if(!ifs.good())
    // {
    //     std::cout << "读文件打开失败" << std::endl;
    //     return -1;
    // }
    // size_t fsize = ifs.tellg();

    // //2.第二步：将ifs的文件指针拨回到起始位置：
    // ifs.seekg(0, std::ifstream::beg);

    // //3.第三步：读文件中的数据，将读取到的数据放到一个缓冲区类当中：
    // std::string body;
    // //这一步为body的字符串开空间，是非常有必要的：
    // body.resize(fsize);
    // ifs.read(&body[0], fsize);
    // bit::Buffer buffer;
    // buffer.push(&body[0], body.size());

    // //4.将缓冲区的内容写到一个新文件当中：
    // std::ofstream ofs("newlog.txt", std::ios::binary);
    // if(!ofs.good())
    // {
    //     std::cout << "写文件打开失败" << std::endl;
    //     return -1;
    // }
    // for(int i = 0; i < buffer.readAbleSize(); )
    // {
    //     ofs.write(buffer.begin(), 1);
    //     buffer.moveReaded(1);
    // }

    //通过工厂定义出三个日志落地方向：
    bit::GlobalLogBuilder builder("sylog", bit::level::logLevel::WARN);
    builder.buildSink<bit::FileSink>("mylog.txt");

    DEBUG("直接打印日志信息");
    builder.build();
    test_log();

    bit::Logger::ptr it = bit::getLogger("sylog");
    it->addSink<bit::RollFileSink>();
    it->fatal("在滚动文件中打印信息");
    //bit::LogSink::ptr stdout_pls = bit::SinkFactory::create<bit::StdoutSink>();
    //bit::LogSink::ptr file_pls = bit::SinkFactory::create<bit::FileSink>("log.txt");
    //bit::LogSink::ptr rfile_pls = bit::SinkFactory::create<bit::RollFileSink>();
    //stdout_pls->log(message.c_str(), message.size());
    //file_pls->log(message.c_str(), message.size());
    // const std::string path = "./abc/def/opq/test.txt";
    // bit::util::create_path(bit::util::get_path(path));
    // int a,b,c,d,e,f;
    // sscanf(bit::util::get_curtime().c_str(), "%d-%d-%d", &a, &b, &c);
    // std::cout << "a=" << a << std::endl;
    // std::cout << "b=" << b << std::endl;
    // std::cout << "c=" << c << std::endl;
    return 0;
}